import * as core from '@actions/core'
import * as github from '@actions/github'
import {GitHub} from '@actions/github/lib/utils'

type Octokit = InstanceType<typeof GitHub>

async function run() {
  try {
    // 获取 GitHub 令牌和评论内容
    const token: string = core.getInput('repo-token', {required: true})
    const comment: string = core.getInput('comment', {required: true})

    // 获取当前时间的字符串表示，不包括毫秒
    const currentTime: string = new Date().toLocaleTimeString(undefined, {
      hour12: false
    })

    // 创建一个 Octokit 客户端
    const octokit: Octokit = github.getOctokit(token)

    // 获取当前仓库和拉取请求的信息
    const {owner, repo}: {owner: string; repo: string} = github.context.repo
    const {number}: {number: number} = github.context.issue

    // 创建评论
    const commentBody = `${comment} (Current Time: ${currentTime})`

    if (github.context.eventName === 'pull_request') {
      // 如果是拉取请求，创建一个拉取请求评论
      await octokit.rest.issues.createComment({
        owner,
        repo,
        issue_number: number,
        body: commentBody
      })
    } else {
      // 如果是提交，创建一个提交评论
      const sha: string = github.context.sha
      await octokit.rest.repos.createCommitComment({
        owner,
        repo,
        commit_sha: sha,
        body: commentBody
      })
    }
  } catch (error) {
    if (error instanceof Error) {
      // 这里我们确保 error 是 Error 类型的实例，然后才访问它的 message 属性
      core.setFailed(error.message)
    } else {
      // 如果 error 不是 Error 类型，我们只能把它转换为字符串
      core.setFailed(String(error))
    }
  }
}

run()
